package com.yupi.yupicturebackend.model.enums;

import cn.hutool.core.util.ObjUtil;
import lombok.Getter;

import java.util.Arrays;
import java.util.Optional;

/**
 * 用户角色枚举
 */
@Getter
public enum UserRoleEnum {

    // ===================== 公共枚举常量 =====================
    USER("用户", "user"),
    VIP("会员", "vip"),
    ADMIN("管理员", "admin");

    /**
     * 角色中文描述
     */
    private final String text;

    /**
     * 角色英文标识
     */
    private final String value;

    // ===================== 构造方法 =====================
    UserRoleEnum(String text, String value) {
        this.text = text;
        this.value = value;
    }

    // ===================== 公共静态方法 =====================

    /**
     * 根据 value 获取枚举
     * <p>优先使用 Optional、Stream 等现代 Java 特性，提升可读性和可维护性。</p>
     *
     * @param value 枚举值的 value
     * @return 枚举值，未找到返回 null
     */
    public static UserRoleEnum getEnumByValue(String value) {
        // 参数校验，判空统一用 Optional
        return Optional.ofNullable(value)
                .flatMap(val ->
                        Arrays.stream(UserRoleEnum.values())
                                .filter(roleEnum -> roleEnum.value.equals(val))
                                .findFirst()
                )
                .orElse(null);
        // 原实现已注释保留，便于回溯
        // if (ObjUtil.isEmpty(value)) {
        //     return null;
        // }
        // for (UserRoleEnum userRoleEnum : UserRoleEnum.values()) {
        //     if (userRoleEnum.value.equals(value)) {
        //         return userRoleEnum;
        //     }
        // }
        // return null;
    }

    // ===================== 辅助方法（如有） =====================
    // 目前无 createXxx、findXxx 等辅助方法，如需扩展统一放在此处

}
